package homework.Demo_1;

import com.sun.org.apache.bcel.internal.generic.NEW;
import jdk.net.Sockets;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.PublicKey;

public class Server {
//    private ServerSocket serverSocket;
//    public Server(){
//        try {
//            System.out.println("正在启动服务端---");
//            serverSocket = new ServerSocket(8088);
//            System.out.println("服务端已启动!");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//    public void start(){
//        try {
//            System.out.println("等待客户端连接---");
//            Socket socket = serverSocket.accept();
//            System.out.println("客户端已连接");
//            InputStream in = socket.getInputStream();
//            InputStreamReader isr = new InputStreamReader(in);
//            BufferedReader br = new BufferedReader(isr);
//            String line = br.readLine();
//            System.out.println(line);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//    }
//
//    public static void main(String[] args) {
//        Server server = new Server();
//        server.start();
//    }
//    private ServerSocket server;
//    public Server(){
//        try {
//            System.out.println("正在启动服务端---");
//            server = new ServerSocket(8088);
//            System.out.println("服务端已启动!");
//
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//    public void start(){
//        try {
//            Socket socket = server.accept();
//            InputStream in = socket.getInputStream();
//            InputStreamReader isr = new InputStreamReader(in);
//            BufferedReader br = new BufferedReader(isr);
//            String line = br.readLine();
//            System.out.println(line);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    public static void main(String[] args) {
//        Server server = new Server();
//        server.start();
//    }
//    private ServerSocket server;
//
//    public Server(){
//        try {
//            System.out.println("启动服务端!");
//            server =new ServerSocket(8088);
//            System.out.println("服务端已启动!");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//    public void Start(){
//        try {
//            System.out.println("");
//            Socket socket = server.accept();
//            InputStream is = socket.getInputStream();
//            InputStreamReader isr = new InputStreamReader(is);
//            BufferedReader bw = new BufferedReader(isr);
//            String line = bw.readLine();
//            System.out.println(line);
//            System.out.println("程序结束!");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    public static void main(String[] args) {
//        Server server = new Server();
//        server.Start();
//    }
//
//    private ServerSocket server;
//
//    public Server(){
//        try {
//            System.out.println("正在启动服务端!");
//            server = new ServerSocket(8088);
//            System.out.println("服务端启动完毕!");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//    public void Start(){
//        try {
//            Socket socket = server.accept();
//            InputStream in = socket.getInputStream();
//            InputStreamReader isr = new InputStreamReader(in);
//            BufferedReader bw = new BufferedReader(isr);
//            String line = bw.readLine();
//            System.out.println(line);
//            System.out.println("程序结束!");
//
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    public static void main(String[] args) {
//        Server server = new Server();
//        server.Start();
//    }
//    private ServerSocket server;
//    public Server(){
//        try {
//            System.out.println("服务端正在启动---");
//            server = new ServerSocket(8088);
//            System.out.println("服务端已启动!");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//    public void sater(){
//        try {
//
//            while (true) {
//                System.out.println("正在连接客户端--");
//                Socket socket = server.accept();
//                System.out.println("一个客户端连接了!");
//
//            ClientHandler handler = new ClientHandler(socket);
//                Thread t = new Thread(handler);
//                t.start();
//
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    public static void main(String[] args) {
//        Server server = new Server();
//        server.sater();
//
//    }
//    private class ClientHandler implements Runnable{
//        private Socket socket;
//        private String host;
//        public  ClientHandler(Socket socket){
//            this.socket = socket;
//            host = socket.getInetAddress().getHostAddress();
//        }
//        public void run(){
//            try {
//                InputStream is = socket.getInputStream();
//                InputStreamReader isr = new InputStreamReader(is);
//                BufferedReader br = new BufferedReader(isr);
//                String line;
//                while ((line = br.readLine())!=null) {
//                    System.out.println(host+":"+line);
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//
//    }
//private ServerSocket serverSocket;
//    public Server(){
//        try {
//            System.out.println("正在启动服务端---");
//            serverSocket = new ServerSocket(8088);
//            System.out.println("服务端已启动!");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//    public void start(){
//        try {
//            while (true) {
//                System.out.println("等待客户端连接---");
//                Socket socket = serverSocket.accept();
//                System.out.println("客户端已连接");
//                ClientHandler handler = new ClientHandler(socket);
//                Thread thread = new Thread(handler);
//                thread.start();
//            }
//
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//    }
//
//    public static void main(String[] args) {
//        Server server = new Server();
//        server.start();
//    }
//    private class ClientHandler implements Runnable{
//        private Socket socket;
//        private String host;
//
//        public ClientHandler(Socket socket){
//            this.socket = socket;
//            host = socket.getInetAddress().getHostAddress();
//        }
//        public void run(){
//            try {
//                InputStream in = socket.getInputStream();
//                InputStreamReader isr = new InputStreamReader(in);
//                BufferedReader br = new BufferedReader(isr);
//                String line ;
//
//                while ((line = br.readLine())!=null) {
//                    System.out.println(host+":"+line);
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//    }
//    private ServerSocket server;
//public Server(){
//    try {
//        System.out.println("正在启动服务端--");
//        server = new ServerSocket(8088);
//        System.out.println("服务端已启动!!!");
//    } catch (IOException e) {
//        e.printStackTrace();
//    }
//}
//public void sater(){
//    try {
//        while (true) {
//            System.out.println("正在接受客户端-----");
//            Socket socket = server.accept();
//            System.out.println("一个客户端已连接!");
//            ClientHandler handler = new ClientHandler(socket);
//            Thread thread = new Thread(handler);
//            thread.start();
//        }
//
//    } catch (IOException e) {
//        e.printStackTrace();
//    }
//}
//
//    public static void main(String[] args) {
//        Server server = new Server();
//        server.sater();
//    }
//    private class ClientHandler implements Runnable{
//        private Socket socket;
//        private String host;
//        public ClientHandler(Socket socket){
//            this.socket = socket;
//            host = socket.getInetAddress().getHostAddress();
//        }
//        public void run(){
//            try {
//
//                InputStream is = socket.getInputStream();
//                InputStreamReader isr = new InputStreamReader(is);
//                BufferedReader br = new BufferedReader(isr);
//                String line;
//                while ((line = br.readLine())!=null){
//                    System.out.println(host+":"+line);
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//    }
    private ServerSocket server;
    public Server(){
        try {
            System.out.println("正在启动服务端~~~~~");
            server = new ServerSocket(8088);
            System.out.println("服务端已启动!!!!!!!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void sater(){
        try {
            while (true) {
                System.out.println("正在连接客户端~~~");
                Socket socket = server.accept();
                System.out.println("客户端已连接!!!!!");
                ClientHandler handler = new ClientHandler(socket);
                Thread thread = new Thread(handler);
                thread.start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Server server = new Server();
        server.sater();

    }

    private class ClientHandler implements  Runnable{
        private Socket socket;
        private String host;

        public ClientHandler(Socket socket){
            this.socket = socket;
            host = socket.getInetAddress().getHostAddress();
        }
        public void run(){
            try {
                InputStream is = socket.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String line ;
                while ((line = br.readLine())!=null){
                    System.out.println(host+":"+line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }





}
